ديف أوبس

تحرير ملف sudoers بفعالية

كيفية تحرير ملف Sudoers على Ubuntu و CentOS: دليل شامل ومفصل

يُعتبر ملف sudoers من أهم الملفات في نظامي التشغيل Linux، سواء في توزيعة Ubuntu أو CentOS، إذ يتحكم في كيفية استخدام الأوامر بصلاحيات المستخدم الجذر (root) عبر أمر sudo. تحرير هذا الملف بشكل صحيح يضمن إدارة آمنة وفعالة لصلاحيات المستخدمين، ويمنع الأخطاء التي قد تؤدي إلى تعطل النظام أو تعريضه لمخاطر أمنية.

يهدف هذا المقال إلى تقديم شرح موسع ودقيق لكيفية تحرير ملف sudoers على توزيعتي Ubuntu وCentOS، مع التركيز على التفاصيل الفنية والأمان، وتوضيح خطوات العمل بشكل مفصل.


1. مفهوم ملف Sudoers وأهميته

ملف sudoers هو ملف نصي يُحدد من يمكنه تنفيذ أوامر بصلاحيات المدير (root) باستخدام الأمر sudo، ويوجد عادةً في المسار:

bash
/etc/sudoers

هذا الملف لا يجب تحريره مباشرة باستخدام محرر نصوص عادي مثل vim أو nano لأن أي خطأ في التهيئة قد يمنع استخدام sudo تمامًا، مما يجعل الوصول إلى صلاحيات المدير مستحيلاً. بدلاً من ذلك، يجب استخدام الأداة visudo التي تتحقق من صحة الصيغة قبل الحفظ.


2. أهمية استخدام visudo لتحرير ملف sudoers

الأداة visudo هي أداة مخصصة لتحرير ملف sudoers، وتقوم بما يلي:

  • تفتح الملف في محرر نصوص (عادةً vi أو محرر آخر حسب الإعداد).

  • تتحقق من صحة قواعد التهيئة قبل الحفظ، بحيث تمنع الأخطاء النحوية التي قد تؤدي إلى تعطيل نظام sudo.

  • تمنع تحرير الملف من قبل أكثر من مستخدم في نفس الوقت.

  • تقوم بحفظ النسخة الأصلية إذا حدث خطأ.


3. خطوات تحرير ملف sudoers باستخدام visudo على Ubuntu

3.1 الوصول إلى النظام

في البداية، يجب أن يكون المستخدم يمتلك صلاحيات لاستخدام sudo. على Ubuntu، يتمتع المستخدم الأول الذي يُنشأ أثناء التثبيت بصلاحيات sudo بشكل افتراضي.

3.2 تنفيذ الأمر visudo

لفتح الملف للتحرير:

bash
sudo visudo

هذا الأمر سيطلب كلمة المرور الخاصة بالمستخدم الذي يستعمل sudo، ثم يفتح الملف في المحرر الافتراضي.

3.3 تعديل الملف

داخل المحرر، يمكن إضافة أو تعديل الصلاحيات بصيغة دقيقة جدًا. مثال على إضافة مستخدم جديد بصلاحيات sudo كاملة:

bash
username ALL=(ALL) ALL
  • username هو اسم المستخدم المراد منحه صلاحيات.

  • ALL الأولى تعني أن المستخدم يمكنه تنفيذ الأوامر على أي مضيف.

  • (ALL) تعني أن المستخدم يمكنه تنفيذ الأوامر بأي هوية.

  • ALL الأخيرة تعني جميع الأوامر.

يمكن أيضًا تقييد الأوامر المسموح بها لمستخدم معين.

3.4 حفظ الملف والتحقق

عند الخروج من المحرر (مثلاً باستخدام :wq في vi)، يتحقق visudo من صحة الملف. إذا وُجد خطأ نحوي، سيتم إعلام المستخدم وسيُطلب تعديل الخطأ قبل الحفظ.


4. خطوات تحرير ملف sudoers على CentOS

تختلف CentOS في بعض النواحي عن Ubuntu، لكن مبدأ تحرير ملف sudoers باستخدام visudo هو نفسه تقريبًا.

4.1 الوصول إلى النظام

يجب أن يكون المستخدم عضوًا في مجموعة wheel على CentOS ليتمكن من استخدام sudo. يمكن التحقق من ذلك عبر:

bash
groups username

وإذا لم يكن العضو في المجموعة، يمكن إضافته باستخدام:

bash
sudo usermod -aG wheel username

4.2 تحرير الملف باستخدام visudo

كما في Ubuntu:

bash
sudo visudo

يفتح الملف للتحرير في المحرر الافتراضي.

4.3 تعديل الصلاحيات

يمكن تعديل الملف لمنح صلاحيات sudo للمستخدم أو تعديل قواعد المجموعة wheel. بشكل افتراضي في CentOS، الصلاحيات تمنح للمجموعة wheel، وهذه السطر يكون موجودًا غالبًا ومُعطلًا بالتعليق:

bash
# %wheel ALL=(ALL) ALL

لتمكين صلاحيات sudo لأعضاء المجموعة wheel، يجب إزالة علامة التعليق:

bash
%wheel ALL=(ALL) ALL

وبذلك يمكن للمستخدمين في هذه المجموعة استخدام sudo.


5. إضافة قواعد خاصة ومخصصة في ملف sudoers

من الممارسات الشائعة إضافة قواعد خاصة لتقييد أو تمكين صلاحيات معينة لمستخدم أو مجموعة. الصيغة العامة في sudoers تسمح بمرونة كبيرة:

5.1 مثال لتقييد أمر معين لمستخدم معين

bash
username ALL=(ALL) /usr/bin/systemctl restart httpd.service

هذا يعني أن المستخدم username يستطيع تنفيذ أمر إعادة تشغيل خدمة Apache فقط.

5.2 السماح لمجموعة كاملة بتنفيذ أوامر محددة بدون كلمة مرور

bash
%groupname ALL=(ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade

يُستخدم هذا لتجنب طلب كلمة المرور عند تنفيذ أوامر التحديث لمجموعة محددة.


6. تنظيم sudoers عبر مجلد sudoers.d

بدلاً من تعديل ملف sudoers الرئيسي، يمكن إضافة ملفات مستقلة في مجلد:

bash
/etc/sudoers.d/

هذه الطريقة تساعد في التنظيم وسهولة الصيانة، وتمنع التداخل في التعديلات.

يمكن إنشاء ملف جديد داخل هذا المجلد، مثلاً:

bash
sudo visudo -f /etc/sudoers.d/custom_rules

ثم إضافة القواعد المرغوبة.


7. تحذيرات وممارسات أمان عند تحرير ملف sudoers

  • عدم تحرير الملف مباشرة بدون visudo: الأخطاء النحوية قد تؤدي لفقدان وصول sudo.

  • الحد من صلاحيات sudo: منح أقل صلاحيات ممكنة للمستخدمين للحد من المخاطر.

  • استخدام مجلد sudoers.d للتنظيم: لتقليل التداخل وزيادة الأمان.

  • النسخ الاحتياطي قبل التعديل: عمل نسخة من ملف sudoers قبل التعديل أمر ضروري.


8. مقارنة بين Ubuntu و CentOS في التعامل مع sudoers

الخاصية Ubuntu CentOS
محرر الملف الافتراضي vi أو nano (حسب الإعداد) vi (عادة)
صلاحيات sudo الافتراضية للمستخدم الأول فقط لأعضاء مجموعة wheel
مجلد sudoers.d موجود ويُستخدم موجود ويُستخدم
تمكين صلاحيات wheel غير مستخدم بشكل افتراضي يجب إزالة تعليق السطر الخاص بـ wheel
استخدام visudo ضروري لمنع الأخطاء ضروري لمنع الأخطاء

9. أمثلة عملية لتعديل ملف sudoers

9.1 منح مستخدم صلاحيات كاملة على Ubuntu

bash
username ALL=(ALL) ALL

9.2 تقييد مستخدم لتنفيذ أمر إعادة تشغيل خدمة nginx فقط على CentOS

bash
username ALL=(ALL) /bin/systemctl restart nginx.service

9.3 السماح لمجموعة dev باستخدام أوامر git بدون كلمة مرور

bash
%dev ALL=(ALL) NOPASSWD: /usr/bin/git

10. الخلاصة

تحرير ملف sudoers على أنظمة Ubuntu وCentOS هو عملية حساسة تحتاج معرفة دقيقة وصحيحة بطريقة التعديل باستخدام أداة visudo. يجب التعامل بحذر مع التعديلات لتجنب فقدان صلاحيات الإدارة أو التسبب بمشاكل أمنية.

الاستفادة من مجلد sudoers.d لتنظيم القواعد، وعدم منح صلاحيات زائدة، والالتزام بالممارسات الأمنية يُعد من أساسيات الإدارة السليمة للنظام. هذه الخطوات تضمن استقرار النظام وأمانه مع الحفاظ على سهولة استخدام sudo للمستخدمين المصرح لهم.


المراجع


بهذا ينتهي الشرح التفصيلي لكيفية تحرير ملف sudoers على Ubuntu و CentOS مع التركيز على الأمان والدقة والمرونة في التخصيص.